package cn.cmcc.online.smsapi.sdk.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import cn.cmcc.online.smsapi.sdk.constant.Constant;
import cn.cmcc.online.smsapi.sdk.log.LogManager;

/**
 * 日期时间工具类
 * @author Administrator
 *
 */
public class DateUtils {
	public final static long ONE_DAY_TIME = 3600 * 24 * 1000L;
	/**
	 * 获取当前的日期字符串 
	 * @param format 返回当前时间的日期格式
	 * @return 
	 */
	public static String getCurrentTimeString(String format){
		String date = "";
		try{
			date = new SimpleDateFormat(format).format(new Date(System.currentTimeMillis()));
		}catch(Throwable e){
//			e.printStackTrace();
            LogManager.e(Constant.TAG, "getCurrentTimeString: ", e);

		}
		return date;
	}
	
	/**
	 * 获取毫秒数对应的日期字符串 
	 * @param format 要返回的日期格式
	 * @param time	 毫秒数
	 * @return 
	 */
	public static String getTimeString(String format,long time){
		String date = "";
		try{
			date = new SimpleDateFormat(format).format(new Date(time));
		}catch(Throwable e){
//			e.printStackTrace();
            LogManager.e(Constant.TAG, "getTimeString: ", e);

		}
		return date;
	}
	
	/**
	 * 获取日期字符串代表的毫秒数
	 * @param dateStr 日期字符串
	 * @param format  传入的日期格式
	 * @return 毫秒数
	 */
	public static long getTime(String dateStr,String format){
		try {
			Date date = new SimpleDateFormat(format).parse(dateStr);
			return date.getTime();
		} catch (ParseException e) {
//			e.printStackTrace();
            LogManager.e(Constant.TAG, "getTime: ", e);

		}
		return 0;
	}
	
	/**
	 * 将日期字符串加天数
	 * @param dateStr 日期字符
	 * @param format  dateStr的格式
	 * @param days	增加的天数
	 * @return
	 */
	public static String addDays(String dateStr,String format, int days){
		long time = getTime(dateStr,format);
		time = time + ONE_DAY_TIME * days;
		return getTimeString(format, time);
	}
	
	/**
	 * 比较两个时间字符串的大小
	 * @param date1
	 * @param date2
	 * @param format
	 * @return date1 > date2 返回true
	 */
	public static boolean compareDateString(String date1, String date2, String format){
		return getTime(date1, format) > getTime(date2, format);
	}

    /* RM-1351 huangzhiqiang 20170407 start */
    /**
     * 比较两个时间相差多少天 例：differentDays(2017-01-01, 2017-01-05)=4
     * 
     * @param date1
     * @param date2
     * @return
     */
    public static int differentDaysByMillisecond(long date1, long date2) {
        int days = (int) ((date2 - date1) / 86400000L);
        return days;
    }
    /* RM-1351 huangzhiqiang 20170407 end */
}
